import request from '@/config/axios'

// 订单主表，存储订单的核心信息 VO
export interface OrderVO {
  id: number|null // 自增主键
  customerName: string // 客户信息 (手填的企业客户名称)
  accountManagerName: string // 客户负责人 (手填)
  consigneeName: string // 收货人姓名
  contactPhoneCountryCode: string // 联系号码 - 国家区号
  contactPhoneNumber: string // 联系号码 - 手机号码
  shippingCity: string // 收货地址 - 城市
  shippingState: string // 收货地址 - 州/省
  shippingPostalCode: string // 收货地址 - 邮政编码
  shippingStreetAddress: string // 收货地址 - 详细街道地址
  deliveryDate: Date|null // 交货日期
  deliveryWarningDays: number|null // 交货预警天数
  paymentDueDate: Date|null // 收款日期
  paymentWarningDays: number|null // 收款预警天数
  contractNumber: string // 合同单号 (手填)
  externalOrderNumber: string // 外部单号 (手填)
  discountPercentage: number|null // 优惠比例 (%)
  discountAmount: number|null // 优惠金额
  amountAfterDiscount: number|null // 优惠后金额
  remarks: string // 备注信息
  orderItems: []
  customerCode: String|null,
  accountManagerId: number|null,
  files: []
  saleOrderCode: string|null // 销售订单号
  source: string|null // 单据来源
  orderStatus: string|null // 工单状态
  completeDate: Date|null // 批准日期
  shipmentDate: Date|null // 出货日期
}

export interface ProductOrderVO extends OrderVO {
  productionOrders: []
  productionOrdersLoading: boolean
}

// 订单主表，存储订单的核心信息 API
export const OrderApi = {
  // 查询订单主表，存储订单的核心信息分页
  getOrderPage: async (params: any) => {
    return await request.get({ url: `/server/orders/page`, params })
  },

  // 查询订单主表，存储订单的核心信息详情
  getOrder: async (id: number) => {
    return await request.get({ url: `/server/orders/get?id=` + id })
  },

  // 新增订单主表，存储订单的核心信息
  createOrder: async (data: OrderVO) => {
    return await request.post({ url: `/server/orders/create`, data })
  },

  // 修改订单主表，存储订单的核心信息
  updateOrder: async (data: OrderVO) => {
    return await request.put({ url: `/server/orders/update`, data })
  },

  // 删除订单主表，存储订单的核心信息
  deleteOrder: async (id: number) => {
    return await request.delete({ url: `/server/orders/delete?id=` + id })
  },

  // 导出订单主表，存储订单的核心信息 Excel
  exportOrder: async (params) => {
    return await request.download({ url: `/server/orders/export-excel`, params })
  },

  // 审核确认
  checkOrder: async (id: number) => {
    return await request.post({ url: `/server/orders/` + id+'/check' })
  },
  // 取消订单
  closeOrder: async (id: number) => {
    return await request.post({ url: `/server/orders/` + id+'/close' })
  },
  // 回退订单
  backOrder: async (id: number) => {
    return await request.post({ url: `/server/orders/` + id+'/rollback' })
  },
  // 下推订单
  pushOrder: async (id: number) => {
    return await request.post({ url: `/server/orders/` + id+'/push' })
  },

  // 查询订单主表，存储订单的核心信息详情
  getOrderByCode: async (orderCode: string) => {
    return await request.get({ url: `/server/orders/getByCode?orderCode=` + orderCode })
  }
}